<!--
 * @Author: yanyufengqing 1624478125@qq.com
 * @Date: 2025-10-03 17:53:38
 * @LastEditors: yanyufengqing 1624478125@qq.com
 * @LastEditTime: 2025-10-03 21:02:50
 * @FilePath: \manage-system\src\views\Home.vue
 * @Description: 系统主页视图组件
-->
<script setup lang="ts">
// 导入页面头部组件
import vHeader from '@/components/header.vue';
// 导入侧边栏组件
import vSlidebar from '@/components/slidebar.vue';
// 导入标签页组件
import vTabs from '@/components/tabs.vue';
// 导入标签页状态管理
import { useTabsStore } from '@/store/tabs';
// 导入侧边栏状态管理
import { useSidebarStore } from '@/store/slidebar';

// 使用侧边栏状态存储
const slidebar = useSidebarStore();
// 使用标签页状态存储
const tabs = useTabsStore();
</script>

<template>
  <!-- 页面包装容器 -->
  <div class="wrapper">
    <!-- 页面头部 -->
    <v-header />
    <!-- 侧边栏 -->
    <v-slidebar />
    <!-- 内容区域盒子 -->
    <div class="content-box" :class="{ 'content-collapse': slidebar.collapse }">
      <!-- slide -->
      <v-tabs></v-tabs>
      <!-- 内容区域 -->
      <div class="content">
        <!-- 路由视图容器 -->
        <router-view v-slot="{ Component }">
          <!-- 页面切换动画 -->
          <transition name="move" mode="out-in">
            <!-- 缓存组件，include指定需要缓存的组件名称列表 -->
            <keep-alive :include="tabs.nameList">
              <component :is="Component" />
            </keep-alive>
          </transition>
        </router-view>
      </div>
    </div>
  </div>
</template>

<style lang="scss">
// 包装容器样式
.wrapper {
  height: 100vh;
  overflow: hidden;
}
// 内容区域盒子样式
.content-box {
  position: absolute;
  left: 250px;
  right: 0;
  top: 70px;
  bottom: 0;
  padding-bottom: 30px;
  -webkit-transition: left 0.3s ease-in-out;
  transition: left 0.3s ease-in-out;
  background: #eef0fc;
  overflow: hidden;
  border: 1px solid red;
}
// 内容区域样式
.content {
  width: auto;
  height: 100%;
  padding: 20px;
  overflow-y: scroll;
  box-sizing: border-box;
}
// 隐藏滚动条
.content::-webkit-scrollbar {
  width: 0;
}

// 侧边栏折叠时的内容区域样式
.content-collapse {
  left: 65px;
}
</style>
